package mb.kurier.dao;

import java.sql.Date;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

import javax.xml.xpath.XPathExpressionException;

import mb.commons.AbstractDAO;
import mb.commons.DbConnection;
import mb.commons.XmlHelper;
import mb.kurier.data.StatisticsData;

/**
 * Klasa dostępu do bazy danych dla statystyk kuriera.
 * @author Michał Budziło
 *
 */
public class StatisticsDAO extends AbstractDAO {

	/**
	 * Konstruktor
	 */
	public StatisticsDAO() {
		conn = DbConnection.getConnection();
		helper = new XmlHelper("WEB-INF/xml/kurier/statistics.xml");

	}
	
	/**
	 * Metoda pobiera z bazy danych, dane do statystyk.
	 * @param from data od 
	 * @param to data do
	 * @param login login kuriera
	 * @param typ typ danych
	 * @return lista obiektów statystyk
	 */
	public ArrayList<StatisticsData> getData( Date from , Date to ,String login,  String typ )
	{
		ArrayList<StatisticsData> lista = new ArrayList<StatisticsData>();
		try {
			if(typ.equals("1")) // wszystkie paczki w danej dacie
			{
				query = helper.getSqlString("wszystkiePaczki","sqlString/prepareMain/prepareStatment");
				
			}else if(typ.equals("2")) // paczki dostarczone 
			{
				query = helper.getSqlString("paczkiDostarczone","sqlString/prepareMain/prepareStatment");
				
			}else if(typ.equals("3")) // paczki nie dostarczone
			{
				query = helper.getSqlString("paczkiNiedostarczone","sqlString/prepareMain/prepareStatment");
				
			}else if(typ.equals("4"))// przejechane kilometry
			{
				query = helper.getSqlString("brzebyteKilometry","sqlString/prepareMain/prepareStatment");
				
			}
			
			prepStmt = conn.prepareStatement(query);
			prepStmt.setString(1, login);
			prepStmt.setDate(2, from);
			prepStmt.setDate(3, to);
			
			
			ResultSet rs = prepStmt.executeQuery();
			
			while (rs.next()) {
				StatisticsData data = new StatisticsData();
				data.setPositionY(rs.getInt(1));
				data.setData(rs.getDate(2));
				
				lista.add(data);
			}
			return lista;
		} catch (SQLException e) {
			error(e.getErrorCode() + " : " + e.getMessage());
			e.printStackTrace();
		} catch (XPathExpressionException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			
			close();
		}

		return null;

	}
	

}
